Basado en este: https://forum.arduino.cc/index.php?topic=417659.0
Para ver qué comando tiene que emitir para cargar un archivo hexadecimal, simplemente debe usar su IDE de arduino en una instalación de prueba.
Sólo tiene que conectar su Arduino con un cable USB, y luego configurar todo para cargar un script en esa placa. Puede elegir File |Examples | 01.Basics | Blink y ese ejemplo está bien. Seleccione su placa Arduino en el menú Arduino IDE Tools | Board. Luego seleccione el puerto de su placa Arduino en el menú Tools | Port. Lo más probable es que ya esté elegido. En File | Preferences aparecerá un formulario.
Aproximadamente en el centro a la izquierda tiene una etiqueta «Show verbose output during» y dos casillas de verificación. «[] compilation» y «[] upload». Marca esta última «[] upload». Cuando estés listo, sólo tienes que emitir el comando compilar y subir en el IDE. Sketch | Upload.
En mi caso, con Arduino UNO, responde con lo siguiente:
Sketch uses 924 bytes (2%) of program storage space. Maximum is 32256 bytes. Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes. /home/enrique/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude -C/home/enrique/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:/tmp/arduino_build_260352/Blink.ino.hex:i ...
Si su tarjeta es un Arduino Mega, el parámetro -p puede aparecer como: -patmega2560
Copie la línea de invocación de avrdude /home/… /bin/avrdude y cambie el lugar del archivo hexadecimal por una ruta completa a su propio archivo hexadecimal. ¡Y listo!
Puede automatizar esta línea haciendo un script del tipo siguiente:
#!/bin/bash # avrdudeload.sh /home/.../bin/avrdude -C/home/.../etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB... -b115200 -D -Uflash:w:$1:i
Saludos